package be.ipl.finito.daoimpl;

import java.util.List;

import javax.ejb.Stateless;

import be.ipl.finito.dao.PartieDao;
import be.ipl.finito.domaine.Joueur;
import be.ipl.finito.domaine.Partie;

@SuppressWarnings("serial")
@Stateless
public class PartieDaoImpl extends DaoImpl<Integer, Partie> implements
		PartieDao {

	@Override
	public List<Partie> listerPartiesARejoindre() {
		return liste("select p from Partie p where p.etat = 0");
	}

	@Override
	public List<Partie> listerPartiesEnCours() {
		return liste("select p from Partie p where p.etat = 1");
	}

	@Override
	public List<Partie> listerPartiesARejoindre(Joueur j) {
		return liste(
				"select p from Partie p where p.etat = 0 and p.id not in(select pp.partie.id from Participation pp where pp.joueur.id = ?1)",
				j.getId());
	}

	@Override
	public List<Partie> listerPartiesEnCours(Joueur j) {
		return liste(
				"select p from Partie p where p.etat = 1 and p.id in(select pp.partie.id from Participation pp where pp.joueur.id = ?1)",
				j.getId());
	}

}
